// var $logManager = require("./LogManager");
// var $arrayUtils = require("./ArrayUtils");
// var $objectUtils = require("./ObjectUtils");
// var $playerDataManager = require("./PlayerDataManager");
// var $excel = require("./Excel");
// var $const_Game = require("./Const_Game");
// var $gameDataManager = require("./GameDataManager");
// var $gameGlobalVariable = require("./GameGlobalVariable");
// var h = cc._decorator;
// var f = h.ccclass;
// var g =
//     (h.property,
//     h.inspector,
//     (function () {
//         function e() {
//             this.geZiBiChuCount = 5;
//             this.oneGeZiId = 1;
//             this.zaZhongMap = new Map();
//         }
//         var t;
//         t = e;
//         Object.defineProperty(e, "I", {
//             get: function () {
//                 if (!this._instance) {
//                     this._instance = new t();
//                     this._instance.StartCheckData();
//                     this._instance.StartSetShuiGuoLevel();
//                 }
//                 return this._instance;
//             },
//             enumerable: !1,
//             configurable: !0
//         });
//         e.prototype.GetEquip = function (e, t, o, n) {
//             var i = this;
//             $gameDataManager.GameDataMgr.gameBag.pickCardCount++;
//             if (t) {
//                 $gameDataManager.GameDataMgr.gameBag.videoCount++;
//             }
//             var s = [];
//             this.weight.forEach(function (e, t) {
//                 if (3 == i.equipPool[t].level || 2 == i.equipPool[t].level) {
//                     s.push(e + 0);
//                 } else {
//                     s.push(e);
//                 }
//             });
//             if (o <= 1) {
//                 this.geZiIdArray.forEach(function (e) {
//                     if (1 == o && e == i.oneGeZiId) {
//                         s[e - 1] = s[e - 1];
//                     } else {
//                         s[e - 1] = 0;
//                     }
//                 });
//             }
//             $gameDataManager.GameDataMgr.gameBag.geZiBaoDi++;
//             $logManager.LogMgr.debug("格子保底数量:", $gameDataManager.GameDataMgr.gameBag.geZiBaoDi);
//             var l = [];
//             for (var p = 0; p < e; p++) {
//                 var h = void 0;
//                 if (0 == p && t) {
//                     h = $arrayUtils.default.getWeightRandom(this.videoWeight);
//                 } else {
//                     if ($gameDataManager.GameDataMgr.gameBag.geZiBaoDi >= this.geZiBiChuCount && o > 0) {
//                         if (1 == o) {
//                             h = this.oneGeZiId - 1;
//                         } else {
//                             h = this.geZiIdArray[$arrayUtils.default.getWeightRandom(this.geZiWeight)] - 1;
//                         }
//                     } else {
//                         {
//                             var f = void 0;
//                             do {
//                                 h = $arrayUtils.default.getWeightRandom(s);
//                                 f = this.equipPool[h];
//                             } while (
//                                 1 == n &&
//                                 f &&
//                                 (f.shuiguoId == $const_Game.FruitId.杨桃忍者 ||
//                                     f.shuiguoId == $const_Game.FruitId.柠檬精 ||
//                                     f.shuiguoId == $const_Game.FruitId.辣妹子 ||
//                                     f.shuiguoId == $const_Game.FruitId.招财橙子)
//                             );
//                         }
//                     }
//                 }
//                 l.push($objectUtils.default.deepCopy(this.equipPool[h]));
//                 if (-1 == this.equipPool[h].level) {
//                     $gameDataManager.GameDataMgr.gameBag.geZiBaoDi = 0;
//                     $logManager.LogMgr.debug("触发格子保底:", $gameDataManager.GameDataMgr.gameBag.geZiBaoDi);
//                 }
//             }
//             return l;
//         };
//         e.prototype.GetOneCell = function (e, t, o) {
//             var n = [];
//             if (
//                 $gameGlobalVariable.GameGlobalVariable.nowlevel >= 1 &&
//                 $gameGlobalVariable.GameGlobalVariable.nowlevel <= 4
//             ) {
//                 var i = [];
//                 switch (o) {
//                     case 1:
//                         i = [2, 3];
//                         break;
//                     case 2:
//                         i = [1];
//                         break;
//                     case 3:
//                         i = [4, 5, 6, 7];
//                 }
//                 if (i.length > 0) {
//                     var a = i[Math.floor(Math.random() * i.length)];
//                     n.push($objectUtils.default.deepCopy(this.equipPool[a - 1]));
//                     return n;
//                 }
//             }
//             for (var s = 0; s < e; s++) {
//                 a = -1;
//                 t > 0 &&
//                     (a =
//                         1 == t
//                             ? this.oneGeZiId - 1
//                             : this.geZiIdArray[$arrayUtils.default.getWeightRandom(this.geZiWeight)] - 1);
//                 -1 != a && n.push($objectUtils.default.deepCopy(this.equipPool[a]));
//             }
//             return n;
//         };
//         e.prototype.StartCheckData = function () {
//             var e = this;
//             if (!this.equipPool) {
//                 this.equipPool = [];
//                 this.weight = [];
//                 this.videoWeight = [];
//                 this.geZiIdArray = [];
//                 this.geZiWeight = [];
//                 $excel.Excel.bagEquipRule_all.forEach(function (t) {
//                     if (
//                         -1 == t.level ||
//                         -1 != $playerDataManager.PlayerDataMgr.dressUpArray.indexOf(t.shuiguoId) ||
//                         (-1 == $excel.Excel.shuiguo(t.shuiguoId).isShow &&
//                             2 == $gameGlobalVariable.GameGlobalVariable.isTeShuLevel())
//                     ) {
//                         e.equipPool.push(t);
//                         e.weight.push(t.weight);
//                         e.videoWeight.push(t.videoWidget);
//                         if (-1 == t.level) {
//                             e.geZiIdArray.push(t.id);
//                             e.geZiWeight.push(t.weight);
//                         }
//                     }
//                 });
//             }
//         };
//         e.prototype.StartSetShuiGuoLevel = function () {
//             var e = this;
//             if (!this.shuiGuoLevelMap) {
//                 this.shuiGuoLevelMap = new Map();
//                 $excel.Excel.shuiguohecheng_all.forEach(function (t) {
//                     if (!e.shuiGuoLevelMap.has(t.shuiguoId)) {
//                         e.shuiGuoLevelMap.set(t.shuiguoId, []);
//                     }
//                     e.shuiGuoLevelMap.get(t.shuiguoId).push(t);
//                 });
//             }
//         };
//         e.prototype.GetEquipUpData = function (e, t) {
//             return this.shuiGuoLevelMap.get(e)[t];
//         };
//         e.prototype.GetMaxLevel = function (e) {
//             var t = -1;
//             var o = $excel.Excel.shuiguo(e);
//             if (0 != o.jinjieShuiGuoId) {
//                 t = o.id;
//             } else {
//                 {
//                     var n = $excel.Excel.shuiguo(this.GetZaZhongId(e));
//                     if (n && 0 != n.jinjieShuiGuoId) {
//                         t = n.id;
//                     }
//                 }
//             }
//             if (-1 != t) {
//                 var i = $excel.Excel.shuiguo(t);
//                 var a = $playerDataManager.PlayerDataMgr.GetEquipDataById(t).level;
//                 if (i.jinJieLv <= a) {
//                     return $gameGlobalVariable.GameGlobalVariable.zaZhongMaxLevel;
//                 }
//             }
//             return $gameGlobalVariable.GameGlobalVariable.normalMaxLevel;
//         };
//         e.prototype.ResetThis = function () {
//             this.equipPool = null;
//             this.StartCheckData();
//         };
//         e.prototype.GetZaZhongId = function (e) {
//             var t = this;
//             if (0 == this.zaZhongMap.size) {
//                 $excel.Excel.shuiguo_all.forEach(function (e) {
//                     if (0 != e.jinjieShuiGuoId) {
//                         t.zaZhongMap.set(e.id, e.jinjieShuiGuoId);
//                         t.zaZhongMap.set(e.jinjieShuiGuoId, e.id);
//                     }
//                 });
//             }
//             return this.zaZhongMap.has(e) ? this.zaZhongMap.get(e) : -1;
//         };
//         e.prototype.GetMustGetGeZi = function () {
//             return null;
//         };
//         return (t = __decorate([f], e));
//     })());
// exports.default = g;


// import { LogMgr } from "./LogManager";
// import ArrayUtils from "./ArrayUtils";
// import ObjectUtils from "./ObjectUtils";
// import { PlayerDataMgr } from "./PlayerDataManager";
// import { Excel } from "./Excel";
// import { GameDataMgr } from "./GameDataManager";
// import { GameGlobalVariable } from "./GameGlobalVariable";
// import { FruitId } from "./Const_Game";

// const { ccclass, property, inspector } = cc._decorator;

// /**
//  * 建议类名: EquipManager
//  */
// @ccclass
// class Logic_GetEquip extends cc.Component {
//     private static _instance: Logic_GetEquip;
//     public geZiBiChuCount: number = 5;
//     public oneGeZiId: number = 1;
//     private zaZhongMap: Map<number, number> = new Map();
//     private equipPool: any[] = [];
//     private weight: number[] = [];
//     private videoWeight: number[] = [];
//     private geZiIdArray: number[] = [];
//     private geZiWeight: number[] = [];
//     private shuiGuoLevelMap: Map<number, any[]> = new Map();

//     /**
//      * 获取单例实例
//      * 建议方法名: getInstance
//      */
//     public static get I(): Logic_GetEquip {
//         if (!this._instance) {
//             this._instance = new Logic_GetEquip();
//             this._instance.StartCheckData();
//             this._instance.StartSetShuiGuoLevel();
//         }
//         return this._instance;
//     }

//     /**
//      * 获取装备
//      * @param count 装备数量
//      * @param isVideo 是否视频
//      * @param geZiType 格子类型
//      * @param isSpecial 是否特殊
//      * 建议方法名: getEquip
//      */
//     public GetEquip(count: number, isVideo: boolean, geZiType: number, isSpecial: number): any[] {
//         const gameBag = GameDataMgr.gameBag;
//         gameBag.pickCardCount++;
//         if (isVideo) {
//             gameBag.videoCount++;
//         }

//         const weights: number[] = [];
//         this.weight.forEach((weight, index) => {
//             if (this.equipPool[index].level === 3 || this.equipPool[index].level === 2) {
//                 weights.push(weight + 0);
//             } else {
//                 weights.push(weight);
//             }
//         });

//         if (geZiType <= 1) {
//             this.geZiIdArray.forEach((id) => {
//                 if (geZiType === 1 && id === this.oneGeZiId) {
//                     weights[id - 1] = weights[id - 1];
//                 } else {
//                     weights[id - 1] = 0;
//                 }
//             });
//         }

//         gameBag.geZiBaoDi++;
//         LogMgr.debug("格子保底数量:", gameBag.geZiBaoDi);

//         const result: any[] = [];
//         for (let i = 0; i < count; i++) {
//             let equipIndex: number;
//             if (i === 0 && isVideo) {
//                 equipIndex = ArrayUtils.getWeightRandom(this.videoWeight);
//             } else {
//                 if (gameBag.geZiBaoDi >= this.geZiBiChuCount && geZiType > 0) {
//                     if (geZiType === 1) {
//                         equipIndex = this.oneGeZiId - 1;
//                     } else {
//                         equipIndex = this.geZiIdArray[ArrayUtils.getWeightRandom(this.geZiWeight)] - 1;
//                     }
//                 } else {
//                     let equip;
//                     do {
//                         equipIndex = ArrayUtils.getWeightRandom(weights);
//                         equip = this.equipPool[equipIndex];
//                     } while (
//                         1 == isSpecial &&
//                         equip &&
//                         (equip.shuiguoId === FruitId.杨桃忍者 ||
//                             equip.shuiguoId === FruitId.柠檬精 ||
//                             equip.shuiguoId === FruitId.辣妹子 ||
//                             equip.shuiguoId === FruitId.招财橙子)
//                     );
//                 }
//             }
//             result.push(ObjectUtils.deepCopy(this.equipPool[equipIndex]));
//             if (this.equipPool[equipIndex].level === -1) {
//                 gameBag.geZiBaoDi = 0;
//                 LogMgr.debug("触发格子保底:", gameBag.geZiBaoDi);
//             }
//         }
//         return result;
//     }

//     /**
//      * 获取单个格子
//      * @param count 格子数量
//      * @param geZiType 格子类型
//      * @param level 等级
//      * 建议方法名: getOneCell
//      */
//     public GetOneCell(count: number, geZiType: number, level: number): any[] {
//         const result: any[] = [];
//         if (GameGlobalVariable.nowlevel >= 1 && GameGlobalVariable.nowlevel <= 4) {
//             let possibleIds: number[] = [];
//             switch (level) {
//                 case 1:
//                     possibleIds = [2, 3];
//                     break;
//                 case 2:
//                     possibleIds = [1];
//                     break;
//                 case 3:
//                     possibleIds = [4, 5, 6, 7];
//                     break;
//             }
//             if (possibleIds.length > 0) {
//                 const randomId = possibleIds[Math.floor(Math.random() * possibleIds.length)];
//                 result.push(ObjectUtils.deepCopy(this.equipPool[randomId - 1]));
//                 return result;
//             }
//         }

//         for (let i = 0; i < count; i++) {
//             let equipIndex = -1;
//             if (geZiType > 0) {
//                 equipIndex = geZiType === 1 ? this.oneGeZiId - 1 : this.geZiIdArray[ArrayUtils.getWeightRandom(this.geZiWeight)] - 1;
//             }
//             if (equipIndex !== -1) {
//                 result.push(ObjectUtils.deepCopy(this.equipPool[equipIndex]));
//             }
//         }
//         return result;
//     }

//     /**
//      * 开始检查数据
//      * 建议方法名: startCheckData
//      */
//     public StartCheckData(): void {
//         if (!this.equipPool) {
//             this.equipPool = [];
//             this.weight = [];
//             this.videoWeight = [];
//             this.geZiIdArray = [];
//             this.geZiWeight = [];
//             Excel.bagEquipRule_all.forEach((rule) => {
//                 if (
//                     rule.level === -1 ||
//                     PlayerDataMgr.dressUpArray.includes(rule.shuiguoId) ||
//                     (Excel.shuiguo(rule.shuiguoId).isShow === -1 &&
//                         GameGlobalVariable.isTeShuLevel() === 2)
//                 ) {
//                     this.equipPool.push(rule);
//                     this.weight.push(rule.weight);
//                     this.videoWeight.push(rule.videoWidget);
//                     if (rule.level === -1) {
//                         this.geZiIdArray.push(rule.id);
//                         this.geZiWeight.push(rule.weight);
//                     }
//                 }
//             });
//         }
//     }

//     /**
//      * 开始设置水果等级
//      * 建议方法名: startSetShuiGuoLevel
//      */
//     public StartSetShuiGuoLevel(): void {
//         if (!this.shuiGuoLevelMap.size) {
//             this.shuiGuoLevelMap = new Map();
//             Excel.shuiguohecheng_all.forEach((rule) => {
//                 if (!this.shuiGuoLevelMap.has(rule.shuiguoId)) {
//                     this.shuiGuoLevelMap.set(rule.shuiguoId, []);
//                 }
//                 this.shuiGuoLevelMap.get(rule.shuiguoId).push(rule);
//             });
//         }
//     }

//     /**
//      * 获取装备升级数据
//      * @param shuiguoId 水果ID
//      * @param level 等级
//      * 建议方法名: getEquipUpData
//      */
//     public GetEquipUpData(shuiguoId: number, level: number): any {
//         return this.shuiGuoLevelMap.get(shuiguoId)?.[level];
//     }

//     /**
//      * 获取最大等级
//      * @param shuiguoId 水果ID
//      * 建议方法名: getMaxLevel
//      */
//     public GetMaxLevel(shuiguoId: number): number {
//         let maxLevel = -1;
//         const shuiguo = Excel.shuiguo(shuiguoId);
//         if (shuiguo.jinjieShuiGuoId !== 0) {
//             maxLevel = shuiguo.id;
//         } else {
//             const zaZhong = Excel.shuiguo(this.GetZaZhongId(shuiguoId));
//             if (zaZhong && zaZhong.jinjieShuiGuoId !== 0) {
//                 maxLevel = zaZhong.id;
//             }
//         }
//         if (maxLevel !== -1) {
//             const maxShuiguo = Excel.shuiguo(maxLevel);
//             const equipData = PlayerDataMgr.GetEquipDataById(maxLevel);
//             if (maxShuiguo.jinJieLv <= equipData.level) {
//                 return GameGlobalVariable.zaZhongMaxLevel;
//             }
//         }
//         return GameGlobalVariable.normalMaxLevel;
//     }

//     /**
//      * 重置当前实例
//      * 建议方法名: resetThis
//      */
//     public ResetThis(): void {
//         this.equipPool = null;
//         this.StartCheckData();
//     }

//     /**
//      * 获取杂种ID
//      * @param shuiguoId 水果ID
//      * 建议方法名: getZaZhongId
//      */
//     public GetZaZhongId(shuiguoId: number): number {
//         if (this.zaZhongMap.size === 0) {
//             Excel.shuiguo_all.forEach((shuiguo) => {
//                 if (shuiguo.jinjieShuiGuoId !== 0) {
//                     this.zaZhongMap.set(shuiguo.id, shuiguo.jinjieShuiGuoId);
//                     this.zaZhongMap.set(shuiguo.jinjieShuiGuoId, shuiguo.id);
//                 }
//             });
//         }
//         return this.zaZhongMap.get(shuiguoId) ?? -1;
//     }

//     /**
//      * 获取必须获得的格子
//      * 建议方法名: getMustGetGeZi
//      */
//     public GetMustGetGeZi(): any {
//         return null;
//     }
// }

// export default Logic_GetEquip;

import { LogMgr } from "./LogManager";
import ArrayUtils from "./ArrayUtils";
import ObjectUtils from "./ObjectUtils";
import { PlayerDataMgr } from "./PlayerDataManager";
import { Excel } from "./Excel";
import { GameDataMgr } from "./GameDataManager";
import { GameGlobalVariable } from "./GameGlobalVariable";
import { FruitId } from "./Const_Game";

const { ccclass, property, inspector } = cc._decorator;

/**
 * 建议类名: EquipManager
 */
@ccclass
class LogicGetEquip extends cc.Component {
    private static _instance: LogicGetEquip;
    public geZiBiChuCount: number = 5;
    public oneGeZiId: number = 1;
    private zaZhongMap: Map<number, number> = new Map();
    private equipPool: any[] = [];
    private equipWeights: number[] = [];
    private videoEquipWeights: number[] = [];
    private geZiIdArray: number[] = [];
    private geZiWeights: number[] = [];
    private shuiGuoLevelMap: Map<number, any[]> = new Map();

    /**
     * 获取单例实例
     * 建议方法名: getInstance
     */
    public static get getInstance(): LogicGetEquip {
        if (!this._instance) {
            this._instance = new LogicGetEquip();
            this._instance.startCheckData();
            this._instance.startSetShuiGuoLevel();
        }
        return this._instance;
    }

    /**
     * 获取装备
     * @param count 装备数量
     * @param isVideo 是否视频
     * @param geZiType 格子类型
     * @param isSpecial 是否特殊
     * 建议方法名: getEquip
     */
    public getEquip(count: number, isVideo: boolean, geZiType: number, isSpecial: number): any[] {
        const gameBag = GameDataMgr.getGameBag;
        gameBag.pickCardCount++;
        if (isVideo) {
            gameBag.videoCount++;
        }

        const weights: number[] = [];
        this.equipWeights.forEach((weight, index) => {
            const equipItem = this.equipPool[index];
            if (equipItem.level === 2 || equipItem.level === 3) {
                weights.push(weight + 0);
            } else {
                weights.push(weight);
            }
        });

        if (geZiType <= 1) {
            this.geZiIdArray.forEach((id) => {
                if (geZiType === 1 && id === this.oneGeZiId) {
                    weights[id - 1] = weights[id - 1];
                } else {
                    weights[id - 1] = 0;
                }
            });
        }

        gameBag.geZiBaoDi++;
        LogMgr.debug("格子保底数量:", gameBag.geZiBaoDi);

        const result: any[] = [];
        for (let i = 0; i < count; i++) {
            let equipIndex: number;
            if (i === 0 && isVideo) {
                equipIndex = ArrayUtils.getWeightedRandomIndex(this.videoEquipWeights);
            } else {
                if (gameBag.geZiBaoDi >= this.geZiBiChuCount && geZiType > 0) {
                    equipIndex = geZiType === 1 ? this.oneGeZiId - 1 : this.geZiIdArray[ArrayUtils.getWeightedRandomIndex(this.geZiWeights)] - 1;
                } else {
                    let equip;
                    do {
                        equipIndex = ArrayUtils.getWeightedRandomIndex(weights);
                        equip = this.equipPool[equipIndex];
                    } while (
                        isSpecial === 1 &&
                        equip &&
                        (
                            equip.shuiguoId === FruitId.杨桃忍者 ||
                            equip.shuiguoId === FruitId.柠檬精 ||
                            equip.shuiguoId === FruitId.辣妹子 ||
                            equip.shuiguoId === FruitId.招财橙子
                        )
                    );
                }
            }
            result.push(ObjectUtils.deepClone(this.equipPool[equipIndex]));
            if (this.equipPool[equipIndex].level === -1) {
                gameBag.geZiBaoDi = 0;
                LogMgr.debug("触发格子保底:", gameBag.geZiBaoDi);
            }
        }
        return result;
    }

    /**
     * 获取单个格子
     * @param count 格子数量
     * @param geZiType 格子类型
     * @param level 等级
     * 建议方法名: getOneCell
     */
    public getOneCell(count: number, geZiType: number, level: number): any[] {
        const result: any[] = [];
        if (GameGlobalVariable.nowlevel >= 1 && GameGlobalVariable.nowlevel <= 4) {
            let possibleIds: number[] = [];
            switch (level) {
                case 1:
                    possibleIds = [2, 3];
                    break;
                case 2:
                    possibleIds = [1];
                    break;
                case 3:
                    possibleIds = [4, 5, 6, 7];
                    break;
            }
            if (possibleIds.length > 0) {
                const randomId = possibleIds[Math.floor(Math.random() * possibleIds.length)];
                result.push(ObjectUtils.deepClone(this.equipPool[randomId - 1]));
                return result;
            }
        }

        for (let i = 0; i < count; i++) {
            let equipIndex = -1;
            if (geZiType > 0) {
                equipIndex = geZiType === 1 ? this.oneGeZiId - 1 : this.geZiIdArray[ArrayUtils.getWeightedRandomIndex(this.geZiWeights)] - 1;
            }
            if (equipIndex !== -1) {
                result.push(ObjectUtils.deepClone(this.equipPool[equipIndex]));
            }
        }
        return result;
    }

    /**
     * 开始检查数据
     * 建议方法名: startCheckData
     */
    public startCheckData(): void {
        if (!this.equipPool.length) {
            this.equipPool = [];
            this.equipWeights = [];
            this.videoEquipWeights = [];
            this.geZiIdArray = [];
            this.geZiWeights = [];
            Excel.bagEquipRule_all.forEach((rule) => {
                if (
                    rule.level === -1 ||
                    PlayerDataMgr.dressUpArray.includes(rule.shuiguoId) ||
                    (Excel.shuiguo(rule.shuiguoId).isShow === -1 &&
                        GameGlobalVariable.isSpecialLevel() === 2)
                ) {
                    this.equipPool.push(rule);
                    this.equipWeights.push(rule.weight);
                    this.videoEquipWeights.push(rule.videoWidget);
                    if (rule.level === -1) {
                        this.geZiIdArray.push(rule.id);
                        this.geZiWeights.push(rule.weight);
                    }
                }
            });
        }
    }

    /**
     * 开始设置水果等级
     * 建议方法名: startSetShuiGuoLevel
     */
    public startSetShuiGuoLevel(): void {
        if (!this.shuiGuoLevelMap.size) {
            this.shuiGuoLevelMap = new Map();
            Excel.shuiguohecheng_all.forEach((rule) => {
                if (!this.shuiGuoLevelMap.has(rule.shuiguoId)) {
                    this.shuiGuoLevelMap.set(rule.shuiguoId, []);
                }
                this.shuiGuoLevelMap.get(rule.shuiguoId).push(rule);
            });
        }
    }

    /**
     * 获取装备升级数据
     * @param shuiguoId 水果ID
     * @param level 等级
     * 建议方法名: getEquipUpData
     */
    public getEquipUpData(shuiguoId: number, level: number): any {
        return this.shuiGuoLevelMap.get(shuiguoId)?.[level];
    }

    /**
     * 获取最大等级
     * @param shuiguoId 水果ID
     * 建议方法名: getMaxLevel
     */
    public getMaxLevel(shuiguoId: number): number {
        let maxLevel = -1;
        const shuiguo = Excel.shuiguo(shuiguoId);
        if (shuiguo.jinjieShuiGuoId !== 0) {
            maxLevel = shuiguo.id;
        } else {
            const zaZhong = Excel.shuiguo(this.getZaZhongId(shuiguoId));
            if (zaZhong && zaZhong.jinjieShuiGuoId !== 0) {
                maxLevel = zaZhong.id;
            }
        }
        if (maxLevel !== -1) {
            const maxShuiguo = Excel.shuiguo(maxLevel);
            const equipData = PlayerDataMgr.getEquipDataById(maxLevel);
            if (maxShuiguo.jinJieLv <= equipData.level) {
                return GameGlobalVariable.zaZhongMaxLevel;
            }
        }
        return GameGlobalVariable.normalMaxLevel;
    }

    /**
     * 重置当前实例
     * 建议方法名: resetThis
     */
    public resetThis(): void {
        this.equipPool = [];
        this.startCheckData();
    }

    /**
     * 获取杂种ID
     * @param shuiguoId 水果ID
     * 建议方法名: getZaZhongId
     */
    public getZaZhongId(shuiguoId: number): number {
        if (this.zaZhongMap.size === 0) {
            Excel.shuiguo_all.forEach((shuiguo) => {
                if (shuiguo.jinjieShuiGuoId !== 0) {
                    this.zaZhongMap.set(shuiguo.id, shuiguo.jinjieShuiGuoId);
                    this.zaZhongMap.set(shuiguo.jinjieShuiGuoId, shuiguo.id);
                }
            });
        }
        return this.zaZhongMap.get(shuiguoId) ?? -1;
    }

    /**
     * 获取必须获得的格子
     * 建议方法名: getMustGetGeZi
     */
    public getMustGetGeZi(): any {
        return null;
    }
}

export default LogicGetEquip;